package br.uvv.Web.ManagedBean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import br.uvv.Model.Usuario;
import br.uvv.Service.AprovacaoUsuarioService;
import br.uvv.Util.RNException;
import br.uvv.Util.Util;

public class AprovacaoUsuarioBean implements Serializable {

	private static final long serialVersionUID = 625022671722152148L;

	private AprovacaoUsuarioService service;
	
	private Usuario usuarioInstance;
	private LazyDataModel<Usuario> usuarioList;
	
	private String varNome;
	private String varUsuario;
	private Date varCadastroDe;
	private Date varCadastroAte;
	
	public String aprovacaoUsuario(){
		init();
		return "/views/aprovacaoUsuario/show.xhtml";
	}
	
	private void init(){
		service = new AprovacaoUsuarioService();
		varNome = "";
		varUsuario = "";
		varCadastroDe = null;
		varCadastroAte = null;
	}
	
	@SuppressWarnings("serial")
	public void filtrarUsuario(){
		usuarioList = new LazyDataModel<Usuario>() {
			@Override
			public List<Usuario> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
				Util.setDataTableRows(pageSize);
				try {
					return service.listarUsuario(first, pageSize, sortField, sortOrder, varNome, varUsuario, varCadastroDe, varCadastroAte);
				} catch (RNException e) {
					e.printStackTrace();
					return new ArrayList<Usuario>();
				}
			}
			@Override  
	        public Usuario getRowData(String rowKey)  
	        {  
	        	try {
		            return service.selecionarUsuario(Long.parseLong(rowKey));
	        	} catch (RNException e) {
	        		e.printStackTrace();
	        		return new Usuario();
	        	} catch (NumberFormatException e){
	        		return new Usuario();
	        	}
	        }  
	        @Override  
	        public String getRowKey(Usuario objeto)  
	        {  
	        	if (objeto!=null)
	        		return ""+objeto.getId();
	        	return "";
	        }  
		};
		try {
			usuarioList.setRowCount(service.countUsuario(varNome, varUsuario, varCadastroDe, varCadastroAte));
		} catch (RNException e) {
			e.printStackTrace();
		}
		usuarioList.setPageSize(5);
	}
	
	public void goDetalhar(){}
	
	public void goAprovar(){}
	
	public void salvarAprovacao(){
	}
	
	public String goHome(){
		service = null;
		usuarioInstance = null;
		usuarioList = null;
		varNome = null;
		varUsuario = null;
		varCadastroDe = null;
		varCadastroAte = null;
		return "goHome";
	}

	public String getVarNome() {
		return varNome;
	}

	public void setVarNome(String varNome) {
		this.varNome = varNome;
	}

	public String getVarUsuario() {
		return varUsuario;
	}

	public void setVarUsuario(String varUsuario) {
		this.varUsuario = varUsuario;
	}

	public Date getVarCadastroDe() {
		return varCadastroDe;
	}

	public void setVarCadastroDe(Date varCadastroDe) {
		this.varCadastroDe = varCadastroDe;
	}

	public Date getVarCadastroAte() {
		return varCadastroAte;
	}

	public void setVarCadastroAte(Date varCadastroAte) {
		this.varCadastroAte = varCadastroAte;
	}
	
	public Usuario getUsuarioInstance() {
		return usuarioInstance;
	}
	
	public void setUsuarioInstance(Usuario usuarioInstance) {
		this.usuarioInstance = usuarioInstance;
	}
	
	public LazyDataModel<Usuario> getUsuarioList() {
		return usuarioList;
	}
	
	public void setUsuarioList(LazyDataModel<Usuario> usuarioList) {
		this.usuarioList = usuarioList;
	}
}